package com.ww.java8.fp.stream.onjava8.ch14;

import com.ww.java8.fp.stream.Bubble;

import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 每个集合都可以通过调用stream()方法来产生一个流
 * map()会获取对象并产生新的对象，在这里产生了特殊的用于数值类型的流
 * @author wanggw
 * 2023年3月1日 下午2:40:48
 */
public class CollectionToStream {

	public static void main(String[] args) {
		List<Bubble> bubbles = Arrays.asList(new Bubble(2), new Bubble(3), new Bubble(4));
		System.out.println(bubbles.stream()
				// mapToInt()方法将一个对象流转换成为包含整型数字的IntStream
				.mapToInt(b -> b.i)
				.sum());
		
		Set<String> w = new HashSet<>(Arrays.asList("It's a wonderful day for pie!".split(" ")));
		w.stream()
			.map(x -> x + " ")
			.forEach(System.out::print);
		System.out.println();
		
		Map<String, Double> m = new HashMap<>();
		m.put("pi", 3.14159);
		m.put("e", 2.718);
		m.put("phi", 1.618);
		// Map类型使用entrySet
		m.entrySet().stream()
			.map(e -> e.getKey() + ": " + e.getValue())
			.forEach(System.out::println);
	}
}
